/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ReglasNegocio;
import AccesoDatos.*;
import java.util.*;
/**
 *
 * @author dani
 */
public abstract class ObjReglaNegocioBase {
    
    protected List<Dato> campo=new ArrayList<Dato>();
    protected ConMySQL conn=new ConMySQL();
    protected String NombreTabla;
    
    public ObjReglaNegocioBase(Dato id) {
        this.obtenerNombreTabla();        
        this.campo.add(id);
        this.conn.Conectar();
        this.asignarCampos();
    }

    public ObjReglaNegocioBase() {
        this.obtenerNombreTabla();        
        conn.Conectar();
    }
    
    public Boolean Existe() {
        String sql="select * from "+this.getNombreObjeto();
        sql+=" where "+this.getDato(0).getNombre();
        sql+="='"+this.getDato(0).getValor()+"'";
        
        Vista v=this.conn.crearVista(sql);
        if (v.getNRegistros()>0)
            return true;
        else
            return false;        
    }
    
    public Dato getDato(int i) {
        return this.campo.get(i);
    }
    
    public Dato getIdentificador() {
        return this.getDato(0);
    }
    
    public int Crear() {
        return 0;
    }
    
    private void obtenerNombreTabla() {
        String[] nombre=this.getClass().getName().split("\\.");
        this.NombreTabla=nombre[1].toLowerCase();
    }
            
    protected Boolean asignarCampos() {
        return false;
    }
    
    public void Eliminar() {
       String sql="delete from "+this.getNombreObjeto();
       sql+=" where "+this.getDato(0).getNombre()+"='"+this.getDato(0).getValor()+"'";
       
       this.conn.ejecutarActualizacion(sql);
    }
    
    public void Actualizar() {}
    
    public String getNombreObjeto() {
        return this.NombreTabla;
    }
    
    
}
